package Controlador;
import java.awt.Window;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;

import javax.swing.JOptionPane;

import Vista.VistaMenu;
import Vista.VistaOrden;
import Modelo.Cliente;
import Modelo.Orden;
import Modelo.DetalleOrden;

import Modelo.Accion;


public class CntrlOrden implements ActionListener,ItemListener{
	
	VistaOrden vistaOrden;
	Accion accion=new Accion();
	private Vector<DetalleOrden> detalleOrden;
	DetalleOrden detalleorden;
	
	public CntrlOrden(VistaOrden vistaorden)
	{
		vistaOrden=vistaorden;
		detalleOrden=new Vector<DetalleOrden>();
		
		
	}
	

	public void actionPerformed(ActionEvent ae) {
		String opcion=(String)ae.getActionCommand();
		if(opcion.equals("Buscar")){
			boolean encontrado;
			Cliente cliente;
			encontrado=accion.consultarCliente(vistaOrden.txtCedula.getText());
			
		    if(encontrado){
		    	
		    cliente=accion.ObtenerCliente(vistaOrden.txtCedula.getText());
		    vistaOrden.txtNombre.setText(cliente.getNombre());
		    vistaOrden.txtApellido.setText(cliente.getApellido());
		    vistaOrden.txtTelefono.setText(cliente.getTelefono());
		    vistaOrden.txtDireccion.setText(cliente.getDireccion());
		     activar();
		    }
		    else{
		    	JOptionPane.showMessageDialog(null, "EL CLIENTE NO SE ENCUENTRA REGISTRADO", 
						"REGISTRO CLIENTE", 
						JOptionPane.INFORMATION_MESSAGE);
		    	
		    	activar();
		    }
		    
		}
		
		
		if(opcion.equals("Registrar Orden")){
			boolean valida=false;
			valida=validarCampos();
			if(valida){
			Orden orden= new Orden(vistaOrden.txtCodOrden.getText(),vistaOrden.txtFecha.getText(),vistaOrden.txtCedula.getText(),Float.parseFloat(vistaOrden.txtMontoT.getText()));
		    accion.registrarOrden(orden);
		    accion.registrarDetalle(detalleOrden);
		    JOptionPane.showMessageDialog(null, "LA ORDEN HA SIDO REGISTRADA", 
					"REGISTRO ORDEN", 
					JOptionPane.INFORMATION_MESSAGE);
			}		
		    else{
		    	
		    	JOptionPane.showMessageDialog(null, "DEBE LLENAR TODOS LOS CAMPOS DE LA ORDEN", 
						"REGISTRO ORDEN", 
						JOptionPane.INFORMATION_MESSAGE);
		    	
		    }
		}
		
		if(opcion.equals("Agregar")){
			
			String codProd=accion.obtenerCodProducto(vistaOrden.cmbProductos.getSelectedItem().toString());
			DetalleOrden detalleprod=new DetalleOrden(vistaOrden.txtCodOrden.getText(),codProd,Integer.parseInt(vistaOrden.txtCantidad.getText()),detalleorden.getPrecioUnitario()); 
			
			String nombreProd=vistaOrden.cmbProductos.getSelectedItem().toString();
			vistaOrden.listaModel.addElement(detalleprod.getCodProducto()+"  "+nombreProd+"  "+detalleprod.getCantidad()+"  "+detalleprod.getPrecioUnitario());
			detalleOrden.add(detalleprod);
		    JOptionPane.showMessageDialog(null, "EL PRODUCTO HA SIDO AGREGADO", 
					"REGISTRO ORDEN", 
					JOptionPane.INFORMATION_MESSAGE);
			
		}
		/*if(opcion.equals("Buscar")){
			boolean encontrado;
			String cat=accion.ObtenerCodCategoria(vistaProd.cmbCategorias.getSelectedItem().toString());
			Producto producto= new Producto(vistaProd.txtCodigo.getText(),cat,vistaProd.txtNombre.getText(),Float.parseFloat(vistaProd.txtPrecio.getText()));
			
		    encontrado=accion.consultarProducto(vistaProd.txtCodigo.getText());
		      if(encontrado){
		    	  producto=accion.ObtenerProducto(vistaProd.txtCodigo.getText());
		    	  vistaProd.txtNombre.setText(producto.getNombreProducto());
		  
		    }
		    else{
		    	JOptionPane.showMessageDialog(null, "El Producto no ha sido registrado", 
						"REGISTRO Producto", 
						JOptionPane.INFORMATION_MESSAGE);
		    	vistaProd.btnRegistrar.setEnabled(true);
		    }
		}*/
		/*if(opcion.equals("Modificar")){
			String cat=accion.ObtenerCodCategoria(vistaProd.cmbCategorias.getSelectedItem().toString());
			Producto producto= new Producto(vistaProd.txtCodigo.getText(),cat,vistaProd.txtNombre.getText(),Float.parseFloat(vistaProd.txtPrecio.getText()));
		   accion.modificarProducto(vistaProd.txtCodigo.getText(),producto);
		   JOptionPane.showMessageDialog(null, "El Producto ha sido modificado ", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
		}
		if(opcion.equals("Eliminar")){
		    accion.eliminarProducto(vistaProd.txtCodigo.getText());
		    JOptionPane.showMessageDialog(null, "El Producto ha sido eliminado", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
		}*/
		
		if(opcion.equals("Limpiar")){
			limpiar();
		}
		
		if(opcion.equals("    Salir   ")){
			vistaOrden.dispose();
		}
		
				
	}
	
	private boolean validarCampos(){
		boolean sw= false;
		if ((!vistaOrden.txtCodOrden.getText().equals("")) && (!vistaOrden.txtCedula.getText().equals("")) && (!vistaOrden.txtCantidad.getText().equals("")) && (!vistaOrden.txtMontoT.getText().equals("")))
		    sw=true;
		return sw;
		
	}

	private void limpiar() {
		vistaOrden.txtCodOrden.setEditable(true);
		//vistaOrden.btnBuscar.setEnabled(true);
		vistaOrden.txtCedula.setText("");
		vistaOrden.txtNombre.setText("");
		vistaOrden.txtApellido.setText("");
		vistaOrden.txtTelefono.setText("");
		vistaOrden.txtDireccion.setText("");
		vistaOrden.txtCodOrden.setText("");
		vistaOrden.txtCantidad.setText("");
		vistaOrden.txtMontoT.setText("");
	}
	
	private void activar(){
		vistaOrden.txtNombre.setEnabled(true);
		vistaOrden.txtApellido.setEnabled(true);
		vistaOrden.txtTelefono.setEnabled(true);
		vistaOrden.txtDireccion.setEnabled(true);
	}
	
	@Override
	public void itemStateChanged(ItemEvent arg0) {
		vistaOrden.repaint();
		
	}
}	

